MQTTProtocolClient.c File Reference

Functions dealing with the MQTT protocol exchanges. More...

#include <stdlib.h>
#include <string.h>
#include "MQTTProtocolClient.h"
#include "MQTTPersistence.h"
#include "SocketBuffer.h"
#include "StackTrace.h"
#include "Heap.h"
Include dependency graph for MQTTProtocolClient.c:

Functions

static void MQTTProtocol_storeQoS0 (Clients *pubclient, Publish *publish)
static int MQTTProtocol_startPublishCommon (Clients *pubclient, Publish *publish, int qos, int retained)
 Utility function to start a new publish exchange.
static void MQTTProtocol_retries (time_t now, Clients *client, int regardless)
 MQTT retry processing per client.
int messageIDCompare (void *a, void *b)
 List callback function for comparing Message structures by message id.
int MQTTProtocol_assignMsgId (Clients *client)
 Assign a new message id for a client.
int MQTTProtocol_startPublish (Clients *pubclient, Publish *publish, int qos, int retained, Messages **mm)
 Start a new publish exchange.
Messages * MQTTProtocol_createMessage (Publish *publish, Messages **mm, int qos, int retained)
 Copy and store message data for retries.
Publications * MQTTProtocol_storePublication (Publish *publish, int *len)
 Store message data for possible retry.
void MQTTProtocol_removePublication (Publications *p)
 Remove stored message data.
int MQTTProtocol_handlePublishes (void *pack, int sock)
 Process an incoming publish packet for a socket.
int MQTTProtocol_handlePubacks (void *pack, int sock)
 Process an incoming puback packet for a socket.
int MQTTProtocol_handlePubrecs (void *pack, int sock)
 Process an incoming pubrec packet for a socket.
int MQTTProtocol_handlePubrels (void *pack, int sock)
 Process an incoming pubrel packet for a socket.
int MQTTProtocol_handlePubcomps (void *pack, int sock)
 Process an incoming pubcomp packet for a socket.
void MQTTProtocol_keepalive (time_t now)
 MQTT protocol keepAlive processing.
void MQTTProtocol_retry (time_t now, int doRetry, int regardless)
 MQTT retry protocol and socket pending writes processing.
void MQTTProtocol_freeClient (Clients *client)
 Free a client structure.
void MQTTProtocol_emptyMessageList (List *msgList)
 Empty a message list, leaving it able to accept new messages.
void MQTTProtocol_freeMessageList (List *msgList)
 Empty and free up all storage used by a message list.
char * MQTTStrncpy (char *dest, const char *src, size_t dest_size)
 Copy no more than dest_size -1 characters from the string pointed to by src to the array pointed to by dest.
char * MQTTStrdup (const char *src)
 Duplicate a string, safely, allocating space on the heap.

Variables

MQTTProtocol state
ClientStates * bstate

Detailed Description

Functions dealing with the MQTT protocol exchanges.

Some other related functions are in the MQTTProtocolOut module


Function Documentation

int messageIDCompare ( void *  a,
void *  b 
)

List callback function for comparing Message structures by message id.

Parameters:
a first integer value
b second integer value
Returns:
boolean indicating whether a and b are equal
int MQTTProtocol_assignMsgId ( Clients *  client  ) 

Assign a new message id for a client.

Make sure it isn't already being used and does not exceed the maximum.

Parameters:
client a client structure
Returns:
the next message id to use, or 0 if none available

Here is the call graph for this function:

Messages* MQTTProtocol_createMessage ( Publish *  publish,
Messages **  mm,
int  qos,
int  retained 
)

Copy and store message data for retries.

Parameters:
publish the publication data
mm - pointer to the message data to store
qos the MQTT QoS to use
retained boolean - whether to set the MQTT retained flag
Returns:
pointer to the message data stored

Here is the call graph for this function:

void MQTTProtocol_emptyMessageList ( List *  msgList  ) 

Empty a message list, leaving it able to accept new messages.

Parameters:
msgList the message list to empty

Here is the call graph for this function:

void MQTTProtocol_freeClient ( Clients *  client  ) 

Free a client structure.

Parameters:
client the client data to free

Here is the call graph for this function:

void MQTTProtocol_freeMessageList ( List *  msgList  ) 

Empty and free up all storage used by a message list.

Parameters:
msgList the message list to empty and free

Here is the call graph for this function:

int MQTTProtocol_handlePubacks ( void *  pack,
int  sock 
)

Process an incoming puback packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePubcomps ( void *  pack,
int  sock 
)

Process an incoming pubcomp packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePublishes ( void *  pack,
int  sock 
)

Process an incoming publish packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePubrecs ( void *  pack,
int  sock 
)

Process an incoming pubrec packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePubrels ( void *  pack,
int  sock 
)

Process an incoming pubrel packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

void MQTTProtocol_keepalive ( time_t  now  ) 

MQTT protocol keepAlive processing.

Sends PINGREQ packets as required.

Parameters:
now current time

Here is the call graph for this function:

void MQTTProtocol_removePublication ( Publications *  p  ) 

Remove stored message data.

Opposite of storePublication

Parameters:
p stored publication to remove

Here is the call graph for this function:

static void MQTTProtocol_retries ( time_t  now,
Clients *  client,
int  regardless 
) [static]

MQTT retry processing per client.

Parameters:
now current time
client - the client to which to apply the retry processing
regardless boolean - retry packets regardless of retry interval (used on reconnect)

Here is the call graph for this function:

void MQTTProtocol_retry ( time_t  now,
int  doRetry,
int  regardless 
)

MQTT retry protocol and socket pending writes processing.

Parameters:
now current time
doRetry boolean - retries as well as pending writes?
regardless boolean - retry packets regardless of retry interval (used on reconnect)

Here is the call graph for this function:

int MQTTProtocol_startPublish ( Clients *  pubclient,
Publish *  publish,
int  qos,
int  retained,
Messages **  mm 
)

Start a new publish exchange.

Store any state necessary and try to send the packet

Parameters:
pubclient the client to send the publication to
publish the publication data
qos the MQTT QoS to use
retained boolean - whether to set the MQTT retained flag
mm - pointer to the message to send
Returns:
the completion code

Here is the call graph for this function:

static int MQTTProtocol_startPublishCommon ( Clients *  pubclient,
Publish *  publish,
int  qos,
int  retained 
) [static]

Utility function to start a new publish exchange.

Parameters:
pubclient the client to send the publication to
publish the publication data
qos the MQTT QoS to use
retained boolean - whether to set the MQTT retained flag
Returns:
the completion code

Here is the call graph for this function:

Publications* MQTTProtocol_storePublication ( Publish *  publish,
int *  len 
)

Store message data for possible retry.

Parameters:
publish the publication data
len returned length of the data stored
Returns:
the publication stored

Here is the call graph for this function:

char* MQTTStrdup ( const char *  src  ) 

Duplicate a string, safely, allocating space on the heap.

Parameters:
src the source string which characters copy from
Returns:
the duplicated, allocated string

Here is the call graph for this function:

char* MQTTStrncpy ( char *  dest,
const char *  src,
size_t  dest_size 
)

Copy no more than dest_size -1 characters from the string pointed to by src to the array pointed to by dest.

The destination string will always be null-terminated.

Parameters:
dest the array which characters copy to
src the source string which characters copy from
dest_size the size of the memory pointed to by dest: copy no more than this -1 (allow for null). Must be >= 1
Returns:
the destination string pointer

Here is the call graph for this function:

 All Data Structures Files Functions Variables Typedefs Defines

Generated on 2 Jun 2018 for MQTT C Client Libraries Internals by  doxygen 1.6.1